#include <REGX52.H>
#include "Delay.h"

unsigned char Key_KeyNumber;

/**
  * @brief  获取按键键码
  * @param  无
  * @retval 按下按键的键码，范围：0,1~4,0表示无按键按下
  */
unsigned char Key(void)
{
	unsigned char Temp=0;  //用于承接Key_KeyNumber的值，防止Key_KeyNumber清零后无法准确返回相应按键
	Temp=Key_KeyNumber;
	Key_KeyNumber=0;
	return Temp;
}
//由于下方函数检测到按键按下之后，会置标志位但是该标志位不会自动清零
//即说明按键按下一次，就不断返回该返回值，则需要实现再返回之前先清零的步骤

unsigned char Key_GetState()
{
	unsigned char KeyNumber=0;
	
	if(P3_1==0){KeyNumber=1;}
	if(P3_0==0){KeyNumber=2;}
	if(P3_2==0){KeyNumber=3;}
	if(P3_3==0){KeyNumber=4;}

	return KeyNumber;
}

void Key_Loop(void)   //此函数中不能使用Delay函数
{
	static unsigned char NowState,LastState;
	LastState=NowState;
	NowState=Key_GetState();
	if(LastState==1 && NowState==0) //松手时有效，若变量值交换则按下时有效
	{
		Key_KeyNumber=1;
	}
	if(LastState==2 && NowState==0)
	{
		Key_KeyNumber=2;
	}
	if(LastState==3 && NowState==0)
	{
		Key_KeyNumber=3;
	}
	if(LastState==4 && NowState==0)
	{
		Key_KeyNumber=4;
	}
}